package top.kaoshanji.ch02.randomAccess;

import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;

/**
 * 助手
 * author kaoshanji
 * ^_^
 * create time 2024/12/6 14:52
 */
public class DataIO {

    // 从输入流中读入字符，直至读入 size 个码元，或者直至遇到具有 0 值的字符值，然后跳过输入字段中剩余的 0 值
    // 为了提高效率，这个方法使用了 StringBuilder 类来读入字符串
    public static String readFixedString(int size, DataInput in) throws IOException {

        var b = new StringBuilder(size);
        int i = 0;
        var done = false;
        while (!done && i < size) {
            char ch = in.readChar();
            i++;
            if (ch == 0) {
                done = true;
            } else {
                b.append(ch);
            }
        }

        in.skipBytes(2 * (size - i));

        return b.toString();
    }

    // 写出从字符串开头开始的指定数量的码元（如果码元过少，该方法将用0值来补齐字符串）
    public static void writeFixedString(String s, int size, DataOutput out) throws IOException {

        for (int i = 0; i < size; i++) {
            char ch = 0;
            if (i < s.length()) {
                ch = s.charAt(i);
            }

            out.writeChar(ch);
        }

    }


}
